#ifndef __CLIENT__
#define __CLIENT__

#include "head.h"
#include "../../command/command.h"
#include "../../command/metaFile.h"
enum{
    CD=1,
    LS,
    PWD,
    PUTS,
    GETS,
    MKDIR,
    RMDIR,
    REMOVE,
};
typedef struct train_s{
    int flag;
    int length;
    char data[4096];
}train_t;

// 断点信息结构体
typedef struct breakPoint_s{
    char filename[4096];
    off_t offset;       // 断点位置（已传输字节数）
    int filesize;       // 文件总大小
    int status;         // 状态码：0-未完成，1-已完成
} breakPoint_t;

int sendFile(int sockfd,char* buf,char *fileRealName,int flag);
int recvFile(int sockfd,char* buf,int *flag);
int epollAdd(int epfd , int fd);
int epollDel(int epfd , int fd);
int sendCmd_p(int sockfd,char* buf,int flag,int *pathid);
int recvCmd_p(int sockfd, char *buf, int *flag,int *pathid);
int delSpace(char *temp,char *buf);//去除命令参数前后空格
int splitCommand(const char *cmd,char *buf);//判断命令，并获取参数
int fileContentHash_sha256(char* fileName ,char* result);
//断电重传函数
//保存断点信息
int save_breakpoint(const char* filename, off_t offset, int filesize);
//加载断点信息
int load_breakpoint(const char* filename, breakPoint_t bp);
//  接收token
int recvToken(int sockfd, char *token);
//  使用小火车传输，小火车的flag默认为-1，小火车的data传输token
int sendToken(int sockfd, char *token);
#endif
